In some instances, a client manipulating a database is directly connected to the database and maintains that connection during manipulation of the data. This type of architecture allows for data synchronization between the client and the database. However, this type of computer architecture places limits on the number of clients that might work with the database at any one time; or in other words, this architecture is not scalable. In other data structure architectures, a multi-tier architecture, such as a three-tier architecture, is used. The client comprises the first tier. The second tier includes servers that contain the business logic while the third tier contains the database or multiple databases.
In the multi-tier architecture, the client makes a request to the second tier for data. A server in the second tier pulls the data from the database in the third tier and sends a snapshot of the data to the client. The client can make changes to the data, such as update the data, add data, or delete data. The changes are sent back to the second tier. Upon return of the data from the client, the client request may or may not be routed to the same server that sent the data to the client originally.
The three-tier approach has disadvantages. One such disadvantage is that scalability is limited. In the case where the client request is returned to the same server each time to track data, load balancing is not optimized. In the case where the client request is not returned to the same server each time, making sure all of the data in all of the tiers is synchronized is difficult.